home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / tcxl551.zip / TCXL_INC.EXE / lha / INC / TCXLWIN.H < prev   
Text File  |  1990-10-01  |  16KB  |  279 lines

  1. /*=====[ The TesSeRact(TM) CXL User Interface Development System ]======*
  2.  | Copyright (c) 1987-1990, Innovative Data Concepts. All Rights Reserved
  3.  |
  4.  | This Library is part of IDC's TesSeRact Development Tools product
  5.  | line. For information about other IDC products, call 1-215-884-3373.
  6.  *----------------------------------------------------------------------*
  7.  | <TCXLwin.h> : Public definitions and prototypes for TCXL windowing
  8.  | system.
  9.  *----------------------------------------------------------------------*
  10.  | PGS : $Id: tcxlwin.h 5.51 90/10/01 00:00:00 MLM Release Locker: MLM $
  11.  | $Log:    tcxlwin.h $
  12.  | Revision 5.51  90/10/01  00:00:00  MLM
  13.  | TCXL 5.51
  14.  | 
  15.  *======================================================================*/
  16. #ifndef  _TCXLwin_
  17. #  define   _TCXLwin_ 1
  18. #  ifndef   _TCXLvid_
  19. #    include <TCXLvid.h>   /* video definitions */
  20. #  endif
  21. #  ifndef   _TCXLerr_
  22. #    include <TCXLerr.h>   /* error definitions */
  23. #  endif
  24.                               /*- Box types ----------------------------*/
  25. #define  BOX_SNG  0x00        /* all single                 */
  26. #define  BOX_DBL  0x01        /* all double                 */
  27. #define  BOX_VER  0x02        /* horiz single, vert double  */
  28. #define  BOX_HOR  0x03        /* horiz double, vert single  */
  29. #define  BOX_HVY  0x04        /* heavy lines                */
  30. #define  BOX_SPA  0x05        /* spaces                     */
  31.                               /*- Border sides -------------------------*/
  32. #define  BRD_TOP  0x00        /* Top      */
  33. #define  BRD_BOT  0x01        /* Bottom   */
  34. #define  BRD_LFT  0x02        /* Left     */
  35. #define  BRD_RGT  0x03        /* Right    */
  36.                               /*- Wcenter(), WpopUp centering flags ----*/
  37. #define  CNT_HOR  0x01        /* Horizontal  */
  38. #define  CNT_VER  0x02        /* Vertical    */
  39. #define  CNT_CNT  0x03        /* Both        */
  40.                               /*- Direction codes ----------------------*/
  41. #define  DIR_DWN  0x00        /* Down  */
  42. #define  DIR_UP   0x01        /* Up    */
  43. #define  DIR_LFT  0x02        /* Left  */
  44. #define  DIR_RGT  0x03        /* Right */
  45.                               /*- Wtitle() title positions -------------*/
  46. #define  TTL_LFT  0x01        /* Left     */
  47. #define  TTL_CNT  0x02        /* Center   */
  48. #define  TTL_RGT  0x03        /* Right    */
  49.  
  50. /*------------------[ Data objects and access macros ]------------------*/
  51.  
  52. TYP   struct   Box   BoxT,  *BoxP;
  53. TYP   struct   Ttl   TtlT,  *Ttlp;
  54. TYP   struct   Wctl  WctlT, *WctlP;
  55. TYP   struct   Wdf   WdfT,  *WdfP;
  56.  
  57. struct   Box            /*-[ Window-frame object ]-------*/
  58. {  BytT  btyp;          /* 00|00 : type                  */
  59.    BytT  batr;          /* 01|01 : attribute             */
  60. };                      /* 02|02 ]-----------------------*/
  61. #define  BoxTyp(b)   ((b).btyp)
  62. #define  BoxAtr(b)   ((b).batr)
  63.  
  64. struct   Ttl            /*-[ Window-title object ]-------*/
  65. {  ChrP  tstr;          /* 00|00 : string                */
  66.    BytT  tpos;          /* 02|04 : position              */
  67.    AtrT  tatr;          /* 03|05 : attribute             */
  68. };                      /* 04|06 ]-----------------------*/
  69. #define  TtlStr(t)   ((t).tstr)
  70. #define  TtlPos(t)   ((t).tpos)
  71. #define  TtlAtr(t)   ((t).tatr)
  72.  
  73. struct   Wctl           /*-[ Window-control object ]--------*/
  74. {  WdfP  wact;          /* 00|00 : active window            */
  75.    WdfP  whid;          /* 02|04 : top hidden window        */
  76.    VOID  (CTYP *wfun)   /* 04|08 : fill-function            */
  77.       (WrdT, WrdT, IntT, IntT);
  78.    WndT  whdl;          /* 06|0C : last handle assigned     */
  79.    TagT  whlp;          /* 08|0E : current help category    */
  80.    IntT  wopn;          /* 0A|10 : total open windows       */
  81.    BytT  wesc;          /* 0C|12 : [Esc] checking ? 1 : 0   */
  82.    BytT  wtab;          /* 0D|13 : TTY output tab width     */
  83.    BytT  wfil;          /* 0E|14 : fill character           */
  84.    BytT  wflg;          /* 0F|15 : reserved flag byte       */
  85. };                      /* 10|16 ]--------------------------*/
  86.  
  87. GBL   WctlT CDC   _WinCtl;    /*- global window-control object ---------*/
  88. #define  WctlAct  (_WinCtl.wact)                   /* active window     */
  89. #define  WctlHid  (_WinCtl.whid)                   /* top hidden window */
  90. #define  WctlFun  (_WinCtl.wfun)                   /* fill function     */
  91. #define  WctlHdl  (_WinCtl.whdl)                   /* last handle       */
  92. #define  WctlHlp  (_WinCtl.whlp)                   /* help category     */
  93. #define  WctlOpn  (_WinCtl.wopn)                   /* total open        */
  94. #define  WctlEsc  (_WinCtl.wesc)                   /* [Esc] check       */
  95. #define  WctlTab  (_WinCtl.wtab)                   /* tab width         */
  96. #define  WctlFil  (_WinCtl.wfil)                   /* fill char         */
  97. #define  WctlFlg  (_WinCtl.wflg)                   /* flag byte         */
  98.  
  99. struct   Wdf            /*-[ Window-definition object ]--*/
  100. {  WdfP  wprv;          /* 00|00 : previous WdfT         */
  101.    WdfP  wnxt;          /* 02|04 : next WdfT             */
  102.    VcelP wbfr;          /* 04|08 : buffer                */
  103.    VcelP wsbf;          /* 06|0C : shadow buffer         */
  104.    TtlT  wttl;          /* 08|10 : title                 */
  105.    WndT  whdl;          /* 0C|14 : handle                */
  106.    TagT  whlp;          /* 0E|16 : help category         */
  107.    VposT wbeg;          /* 10|18 : start position        */
  108.    VposT wend;          /* 12|1A : end position          */
  109.    VposT wpos;          /* 14|1C : cursor position       */
  110.    BoxT  wfrm;          /* 16|1E : border                */
  111.    AtrT  wdat;          /* 18|20 : default attribute     */
  112.    AtrT  wcat;          /* 19|21 : current attribute     */
  113.    AtrT  wsat;          /* 1A|22 : shadow attribute      */
  114.    BytT  wbrd;          /* 1B|23 : border ? 1 : 0        */
  115. };                      /* 1C|24 ]-----------------------*/
  116.  
  117. #define  WdfPrv(w)   ((w)->wprv)                   /* previous WdfT     */
  118. #define  WdfNxt(w)   ((w)->wnxt)                   /* next WdfT         */
  119. #define  WdfBfr(w)   ((w)->wbfr)                   /* buffer            */
  120. #define  WdfSbf(w)   ((w)->wsbf)                   /* shadow buffer     */
  121. #define  WdfTtl(w)   ((w)->wttl)                   /* title             */
  122. #define  WdfTtlS(w)  (TtlStr(WdfTtl(w)))           /*    string         */
  123. #define  WdfTtlP(w)  (TtlPos(WdfTtl(w)))           /*    position       */
  124. #define  WdfTtlA(w)  (TtlAtr(WdfTtl(w)))           /*    attribute      */
  125. #define  WdfHdl(w)   ((w)->whdl)                   /* handle            */
  126. #define  WdfHlp(w)   ((w)->whlp)                   /* help category     */
  127. #define  WdfBeg(w)   ((w)->wbeg)                   /* start position    */
  128. #define  WdfBegW(w)  (VposW(WdfBeg(w)))            /*    word           */
  129. #define  WdfBegC(w)  (VposC(WdfBeg(w)))            /*    col            */
  130. #define  WdfBegR(w)  (VposR(WdfBeg(w)))            /*    row            */
  131. #define  WdfEnd(w)   ((w)->wend)                   /* end position      */
  132. #define  WdfEndW(w)  (VposW(WdfEnd(w)))            /*    word           */
  133. #define  WdfEndC(w)  (VposC(WdfEnd(w)))            /*    col            */
  134. #define  WdfEndR(w)  (VposR(WdfEnd(w)))            /*    row            */
  135. #define  WdfPos(w)   ((w)->wpos)                   /* cursor position   */
  136. #define  WdfPosW(w)  (VposW(WdfPos(w)))            /*    word           */
  137. #define  WdfPosC(w)  (VposC(WdfPos(w)))            /*    col            */
  138. #define  WdfPosR(w)  (VposR(WdfPos(w)))            /*    row            */
  139. #define  WdfFrm(w)   ((w)->wfrm)                   /* border            */
  140. #define  WdfFrmT(w)  (BoxTyp(WdfFrm(w)))           /*    type           */
  141. #define  WdfFrmA(w)  (BoxAtr(WdfFrm(w)))           /*    attribute      */
  142. #define  WdfDat(w)   ((w)->wdat)                   /* default attribute */
  143. #define  WdfCat(w)   ((w)->wcat)                   /* current attribute */
  144. #define  WdfSat(w)   ((w)->wsat)                   /* shadow attribute  */
  145. #define  WdfBrd(w)   ((w)->wbrd)                   /* b